﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AgileSaude.Entities;
using AgileSaude.Business.Validation;
using AgileSaude.Data.Repository;
using AgileSaude.Data;
using FBS.Framework;
using AgileSaude.Business.Process;

namespace AgileSaude.Business
{
    public class UsuarioFacade
    {
        public static bool AutenticarLogin(ref UsuarioEntities pUsuario, string pSenha)
        {
            return new UsuarioProcess().AutenticarLogin(ref pUsuario, pSenha).Sucesso;
        }

        public Resultado TemAcesso(UsuarioEntities pUsuario, string pNomeForm, ref Resultado resultado)
        {
            return new UsuarioProcess().TemAcesso(pUsuario, pNomeForm, ref resultado);
        }

        public List<UsuarioEntities> Listar(UsuarioEntities pFiltro, ref Resultado resultado)
        {
            return new UsuarioProcess().Listar(pFiltro, ref resultado);
        }

        public Resultado Ativar(int pIdUsuario)
        {
            return new UsuarioProcess().AtivarInativar(pIdUsuario, true);
        }

        public Resultado Inativar(int pIdUsuario)
        {
            return new UsuarioProcess().AtivarInativar(pIdUsuario, false);
        }

        public UsuarioEntities GetUsuario(int pIdUsuario)
        {
            return new UsuarioProcess().GetUsuario(pIdUsuario);
        }

        public UsuarioEntities GetUsuarioByCPF(string pCPF)
        {
            return new UsuarioProcess().GetUsuarioByCPF(pCPF);
        }

        public Resultado Incluir(UsuarioEntities pObj)
        {
            UsuarioProcess process = new UsuarioProcess();
            Resultado resultado = process.Incluir(pObj);
            if (resultado.Sucesso)
                process.EnviarSenha(pObj);

            return resultado;
        }

        public Resultado Alterar(UsuarioEntities pObj)
        {
            return new UsuarioProcess().Alterar(pObj);
        }

        public string CreatePassword(int tamanho)
        {
            return new UsuarioProcess().CreatePassword(tamanho);
        }

        public string GeraSenha(int tamanho)
        {
            return new UsuarioProcess().GeraSenha(tamanho);
        }

        public void EnviarSenha(UsuarioEntities pobj)
        {
            new UsuarioProcess().EnviarSenha(pobj);
        }

    }
}
